﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using CMSMVC4.Areas.Main.Models;
using CMSMVC4.Filters;

namespace CMSMVC4.Areas.Main.Controllers
{
    public class SitemapController : Controller
    {
        //
        // GET: /Admin/Sitemap/

        public ActionResult Index()
        {
            List<Post> posts = new List<Post>();
            CMSMVC4Entities db = new CMSMVC4Entities();
            //-----------------home-------------------
            Post pt = new Post();
            pt.ID = 0;
            pt.Title = "3DSCAN VIỆT NAM";
            pt.Body = "Nhà cung cấp dịch vụ quét và xây dựng mô hình 3D sử dụng công nghệ laser chuyên nghiệp tại Việt Nam. ";
            pt.Slug = "/Home/Index";
            pt.DateAdded = DateTime.Now;
            pt.UpdatedOn = DateTime.Now;
            posts.Add(pt);
            //-----------------Rss-------------------
            pt = new Post();
            pt.ID = 0;
            pt.Title = "Rss";
            pt.Body = "Các kênh RSS do 3DSCAN cung cấp";
            pt.Slug = "/Home/Rss";
            pt.DateAdded = DateTime.Now;
            pt.UpdatedOn = DateTime.Now;
            posts.Add(pt);
            //-----------------Sitemap-------------------
            pt = new Post();
            pt.ID = 0;
            pt.Title = "Sitemap";
            pt.Body = "Bản Đồ Sitemap";
            pt.Slug = "/Home/sitemap";
            pt.DateAdded = DateTime.Now;
            pt.UpdatedOn = DateTime.Now;
            posts.Add(pt);
            //-----------------Lien He-------------------
            pt = new Post();
            pt.ID = 0;
            pt.Title = "Liên Hệ";
            pt.Body = "Liên hệ với chúng tôi ngay khi bạn cần để được tư vấn và giải đáp những giải pháp tốt nhất - Gửi trực tiếp ý kiến của bạn vào hòm thư chúng tôi";
            pt.Slug = "/LienHe/Index";
            pt.DateAdded = DateTime.Now;
            pt.UpdatedOn = DateTime.Now;
            posts.Add(pt);
            //-------------------Gioi Thieu----------------
            var categories = db.Categories.Where(x => x.Type == MenuType.GioiThieu && x.Status == CategoriStatus.Thuong).ToList();
            if (categories.Count > 0)
            {
                foreach (var tb in categories)
                {
                    pt = new Post();
                    pt.ID = tb.Id;
                    var name = tb.CateLangs.FirstOrDefault(x => x.CategoriesId == tb.Id && x.LanguageCode.Equals("vi-vn"));
                    if (name != null)
                    {
                        pt.Title = name.Name;
                        pt.Body = name.Name;
                    }
                    pt.Slug = "/GioiThieu/Index/";
                    pt.DateAdded = DateTime.Now;
                    pt.UpdatedOn = DateTime.Now;
                    posts.Add(pt);
                }
                foreach (var tb in categories)
                {
                    pt = new Post();
                    pt.ID = tb.Id;
                    var name = tb.CateLangs.FirstOrDefault(x => x.CategoriesId == tb.Id && x.LanguageCode.Equals("en-us"));
                    if (name != null)
                    {
                        pt.Title = name.Name;
                        pt.Body = name.Name;
                    }
                    pt.Slug = "/GioiThieu/Index/";
                    pt.DateAdded = DateTime.Now;
                    pt.UpdatedOn = DateTime.Now;
                    posts.Add(pt);
                }

            }
            //-----------------Thiet Bi------------------
            categories = db.Categories.Where(x => x.Type == MenuType.ThiteBi && x.Status == CategoriStatus.Thuong).ToList();
            if (categories.Count > 0)
            {
                foreach (var tb in categories)
                {
                        pt = new Post();
                        pt.ID = tb.Id;
                        var name = tb.CateLangs.FirstOrDefault(x => x.CategoriesId == tb.Id && x.LanguageCode.Equals("vi-vn"));
                        if (name != null)
                        {
                            pt.Title = name.Name;
                            pt.Body = name.Name;
                        }
                        pt.Slug = "/ThietBi/Index/"+tb.Id;
                        pt.DateAdded = DateTime.Now;
                        pt.UpdatedOn = DateTime.Now;
                        posts.Add(pt);
                }
                foreach (var tb in categories)
                {
                    pt = new Post();
                    pt.ID = tb.Id;
                    var name = tb.CateLangs.FirstOrDefault(x => x.CategoriesId == tb.Id && x.LanguageCode.Equals("en-us"));
                    if (name != null)
                    {
                        pt.Title = name.Name;
                        pt.Body = name.Name;
                    }
                    pt.Slug = "/ThietBi/Index/" + tb.Id;
                    pt.DateAdded = DateTime.Now;
                    pt.UpdatedOn = DateTime.Now;
                    posts.Add(pt);
                }

            }
            //-------------------Dich Vu----------------
            categories = db.Categories.Where(x => x.Type == MenuType.DichVu && x.Status == CategoriStatus.Thuong).ToList();
            if (categories.Count > 0)
            {
                foreach (var tb in categories)
                {
                    pt = new Post();
                    pt.ID = tb.Id;
                    var name = tb.CateLangs.FirstOrDefault(x => x.CategoriesId == tb.Id && x.LanguageCode.Equals("vi-vn"));
                    if (name != null)
                    {
                        pt.Title = name.Name;
                        pt.Body = name.Name;
                    }
                    pt.Slug = "/DichVu/BaiViet/" + tb.Id;
                    pt.DateAdded = DateTime.Now;
                    pt.UpdatedOn = DateTime.Now;
                    posts.Add(pt);
                }
                foreach (var tb in categories)
                {
                    pt = new Post();
                    pt.ID = tb.Id;
                    var name = tb.CateLangs.FirstOrDefault(x => x.CategoriesId == tb.Id && x.LanguageCode.Equals("en-us"));
                    if (name != null)
                    {
                        pt.Title = name.Name;
                        pt.Body = name.Name;
                    }
                    pt.Slug = "/DichVu/BaiViet/" + tb.Id;
                    pt.DateAdded = DateTime.Now;
                    pt.UpdatedOn = DateTime.Now;
                    posts.Add(pt);
                }

            }
            //-------------------Tin Tuc----------------
            var Page = db.Pages.Where(x => x.Category.Type == MenuType.TinTuc && x.Status == PageStatus.Thuong).ToList();
            if (Page.Count > 0)
            {
                foreach (var tb in Page)
                {
                    pt = new Post();
                    pt.ID = tb.Id;
                    var name = tb.PageLangs.FirstOrDefault(x => x.PageId == tb.Id && x.LanguageCode.Equals("vi-vn"));
                    if (name != null)
                    {
                        pt.Title = name.Name;
                        pt.Body = name.Summary;
                    }
                    pt.Slug = "/TinTuc/BaiViet/" + tb.Id;
                    pt.DateAdded = DateTime.Now;
                    pt.UpdatedOn = DateTime.Now;
                    posts.Add(pt);
                }
                foreach (var tb in Page)
                {
                    pt = new Post();
                    pt.ID = tb.Id;
                    var name = tb.PageLangs.FirstOrDefault(x => x.PageId == tb.Id && x.LanguageCode.Equals("en-us"));
                    if (name != null)
                    {
                        pt.Title = name.Name;
                        pt.Body = name.Summary;
                    }
                    pt.Slug = "/TinTuc/BaiViet/" + tb.Id;
                    pt.DateAdded = DateTime.Now;
                    pt.UpdatedOn = DateTime.Now;
                    posts.Add(pt);
                }

            }
            //-----------------------------------------
            SitemapActionResults sm = new SitemapActionResults();
            sm.SitemapActionResult(posts);
            return sm;
        }

    }
}
